package controler;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;

import main.Game;
import model.Player;
import model.Player_bot;
import view.Choice_view;

public class ChoiceListener implements ActionListener{
	Game game;
	boolean next1,next2,next3;
	Choice_view cv;

	public ChoiceListener(Game g, Choice_view cv){
		this.game=g;
		this.cv=cv;
	}
	public void actionPerformed(ActionEvent e) {
		//if source is a pawnChoice comboBox
		if(e.getActionCommand().equals("Validate")){

			if(cv.pawnList==null){
				cv.nameList = new ArrayList<>();
				cv.pawnList = new ArrayList<>();
				cv.nameList.add(cv.nameTextField1);
				cv.nameList.add(cv.nameTextField2);
				cv.pawnList.add(cv.pawn_choice1);
				cv.pawnList.add(cv.pawn_choice2);
			}
			next1=true;
			for(int i=0;i<cv.pawnList.size();i++){
				if(next1){
					for(int y=0;y<cv.pawnList.size();y++){
						if(i!=y){
							if(cv.pawnList.get(i).getSelectedItem()==cv.pawnList.get(y).getSelectedItem()){
								JOptionPane.showMessageDialog(null,"You can't have the same pawn");
								next1=false;
								break;
							}
							else{
								next1=true;
							}
						}
					}
				}
			}
			for(int i=0;i<cv.nameList.size();i++){
				if(cv.nameList.get(i).getText().equals("")){
					JOptionPane.showMessageDialog(null,"you must enter a name");
					next2=false;
					break;
				}
				else{
					next2=true;
				}
			}




			if(next1==true && next2==true){
				ArrayList<JCheckBox>botBox = new ArrayList<>();
				botBox.add(cv.bot2);
				botBox.add(cv.bot3);
				botBox.add(cv.bot4);
				botBox.add(cv.bot5);
				botBox.add(cv.bot6);
				for(int i=0;i<cv.pawnList.size();i++){

					ImageIcon img = (ImageIcon)cv.pawnList.get(i).getSelectedItem();
					if(i==0){
						Player p1 =  new Player(cv.nameList.get(i).getText(),img);
						game.listPlayer.add(p1);
					}
					else{
						if(botBox.get(i-1).isSelected()){
							Player bot = new Player_bot(cv.nameList.get(i).getText(), img);
							game.listPlayer.add(bot);
						}
						else{
							Player p2 = new Player(cv.nameList.get(i).getText(), img);
							game.listPlayer.add(p2);
						}
					}
				}


				for(int i=0;i<game.listPlayer.size();i++){
					System.out.println(game.listPlayer.get(i).getName());
				}
				game.start_game();

			}
		}

		//if source is a number if player ComboBox
		if(e.getSource()==cv.nbCombox){
			JComboBox<Integer> cb = (JComboBox)e.getSource();

			if(cb.getSelectedItem().equals(3)){
				cv.nameList = new ArrayList<>();
				cv.pawnList = new ArrayList<>();
				cv.nameTextField3.setVisible(true);
				cv.nameTextField4.setVisible(false);
				cv.nameTextField5.setVisible(false);
				cv.nameTextField6.setVisible(false);

				cv.pawn_choice3.setVisible(true);
				cv.pawn_choice4.setVisible(false);
				cv.pawn_choice5.setVisible(false);
				cv.pawn_choice6.setVisible(false);

				cv.bot3.setVisible(true);
				cv.bot4.setVisible(false);
				cv.bot5.setVisible(false);
				cv.bot6.setVisible(false);

				cv.nameList.add(cv.nameTextField1);
				cv.nameList.add(cv.nameTextField2);
				cv.nameList.add(cv.nameTextField3);
				cv.pawnList.add(cv.pawn_choice1);
				cv.pawnList.add(cv.pawn_choice2);
				cv.pawnList.add(cv.pawn_choice3);
			}
			else if(cb.getSelectedItem().equals(4)){
				cv.nameList = new ArrayList<>();
				cv.pawnList = new ArrayList<>();
				cv.nameTextField3.setVisible(true);
				cv.nameTextField4.setVisible(true);
				cv.nameTextField5.setVisible(false);
				cv.nameTextField6.setVisible(false);

				cv.pawn_choice3.setVisible(true);
				cv.pawn_choice4.setVisible(true);
				cv.pawn_choice5.setVisible(false);
				cv.pawn_choice6.setVisible(false);

				cv.bot3.setVisible(true);
				cv.bot4.setVisible(true);
				cv.bot5.setVisible(false);
				cv.bot6.setVisible(false);

				cv.nameList.add(cv.nameTextField1);
				cv.nameList.add(cv.nameTextField2);
				cv.nameList.add(cv.nameTextField3);
				cv.nameList.add(cv.nameTextField4);
				cv.pawnList.add(cv.pawn_choice1);
				cv.pawnList.add(cv.pawn_choice2);
				cv.pawnList.add(cv.pawn_choice3);
				cv.pawnList.add(cv.pawn_choice4);
			}
			else if(cb.getSelectedItem().equals(5)){
				cv.nameList = new ArrayList<>();
				cv.pawnList = new ArrayList<>();
				cv.nameTextField3.setVisible(true);
				cv.nameTextField4.setVisible(true);
				cv.nameTextField5.setVisible(true);
				cv.nameTextField6.setVisible(false);

				cv.pawn_choice3.setVisible(true);
				cv.pawn_choice4.setVisible(true);
				cv.pawn_choice5.setVisible(true);
				cv.pawn_choice6.setVisible(false);

				cv.bot3.setVisible(true);
				cv.bot4.setVisible(true);
				cv.bot5.setVisible(true);
				cv.bot6.setVisible(false);

				cv.nameList.add(cv.nameTextField1);
				cv.nameList.add(cv.nameTextField2);
				cv.nameList.add(cv.nameTextField3);
				cv.nameList.add(cv.nameTextField4);
				cv.nameList.add(cv.nameTextField5);
				cv.pawnList.add(cv.pawn_choice1);
				cv.pawnList.add(cv.pawn_choice2);
				cv.pawnList.add(cv.pawn_choice3);
				cv.pawnList.add(cv.pawn_choice4);
				cv.pawnList.add(cv.pawn_choice5);
			}
			else if(cb.getSelectedItem().equals(6)){
				cv.nameList = new ArrayList<>();
				cv.pawnList = new ArrayList<>();
				cv.nameTextField3.setVisible(true);
				cv.nameTextField4.setVisible(true);
				cv.nameTextField5.setVisible(true);
				cv.nameTextField6.setVisible(true);

				cv.pawn_choice3.setVisible(true);
				cv.pawn_choice4.setVisible(true);
				cv.pawn_choice5.setVisible(true);
				cv.pawn_choice6.setVisible(true);

				cv.bot3.setVisible(true);
				cv.bot4.setVisible(true);
				cv.bot5.setVisible(true);
				cv.bot6.setVisible(true);

				cv.nameList.add(cv.nameTextField1);
				cv.nameList.add(cv.nameTextField2);
				cv.nameList.add(cv.nameTextField3);
				cv.nameList.add(cv.nameTextField4);
				cv.nameList.add(cv.nameTextField5);
				cv.nameList.add(cv.nameTextField6);
				cv.pawnList.add(cv.pawn_choice1);
				cv.pawnList.add(cv.pawn_choice2);
				cv.pawnList.add(cv.pawn_choice3);
				cv.pawnList.add(cv.pawn_choice4);
				cv.pawnList.add(cv.pawn_choice5);
				cv.pawnList.add(cv.pawn_choice6);
			}
			else {
				cv.nameList = new ArrayList<>();
				cv.pawnList = new ArrayList<>();

				cv.nameTextField3.setVisible(false);
				cv.nameTextField4.setVisible(false);
				cv.nameTextField5.setVisible(false);
				cv.nameTextField6.setVisible(false);

				cv.pawn_choice3.setVisible(false);
				cv.pawn_choice4.setVisible(false);
				cv.pawn_choice5.setVisible(false);
				cv.pawn_choice6.setVisible(false);

				cv.bot3.setVisible(false);
				cv.bot4.setVisible(false);
				cv.bot5.setVisible(false);
				cv.bot6.setVisible(false);

				cv.nameList.add(cv.nameTextField1);
				cv.nameList.add(cv.nameTextField2);
				cv.pawnList.add(cv.pawn_choice1);
				cv.pawnList.add(cv.pawn_choice2);
			}
		}
	}
}
